package study.activiti.ssh.utils;

import study.activiti.ssh.domain.Employee;
import sun.print.resources.serviceui;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;

/**  
* @Name: HelloWorld
* @Description: 登录验证拦截器
* 说明：用来验证Session中存放的当前用户信息是否存在
* 	  1、存在Session，可以访问对应Action中的方法
* 	  2、不存在Session，跳转到登录页面
* @Author: 李超
* @Create Date: 2016-12-11
*/
@SuppressWarnings("serial")
public class LoginInteceptor implements Interceptor {

	public void init() {}

	/**  
	* @Name: intercept（方法的名称）
	* @Description: 每次访问Action类之前，会先执行该拦截器方法（方法的描述）
	* 1、放行登录页面的Action请求
	* 2、过滤其他所有的Action请求，验证Session中存放的当前用户信息是否存在：
	  	1、存在，放行action请求，访问对应的Action方法
 	  	2、不存在，跳转到登录页面
	* @Author: 李超（作者）
	* @Version: V1.00 （版本号）
	* @Create Date: 2016-12-16 （创建日期）
	* @Parameters: 无（方法的入参，如果没有，填写为“无”）
	* @Return: 无（返回值，如果没有，填写为“无”）
	*/
	public String intercept(ActionInvocation invocation) throws Exception {
		//获取当前访问Action的URL
		String actionName = invocation.getProxy().getActionName() ;
		//如果当前访问Action的Url是"loginAction_login"，表示此时还没有session，需要放行
		if(!"loginAction_login".equals(actionName)) {
			//从session中获取当前用户对象
			Employee employee = SessionContext.get() ;
			//如果Session中不存在当前用户对象，则跳转到登录页面
			if(employee == null) {
				return "login" ;
			}
		}
		//放行，访问action类中的方法
		return invocation.invoke();
	}
	
	public void destroy() {}

}
